A typical communications system may include multiple devices, which communicate over a communications bus. The bus may be a serial bus, which sends information sequentially, or may be a parallel bus, which sends information over parallel paths, such as may be found in a computer, for example. Unfortunately, if the communications bus fails or is disrupted, the device may fail entirely. Accordingly, systems requiring higher reliability may typically include a plurality of communications buses, so that if one fails, another one may be used. More particularly, the devices connected to the buses may select or be commanded to operate using one bus among the plurality of buses.
One approach to control switching of devices to use a desired bus includes a bus controller to provide a single bus enable signal to the various other devices, typically slave devices. This single bus enable signal is typically implemented via a resistor connected to power, which is delivered to the bus controller. Accordingly, when the bus controller is selectively powered, the bus enable signal is also generated so that a selected bus, that is, the primary bus, is used by the slave devices. Conversely, if the bus enable signal is not present, or at logic “0”, for example, the slave devices switch from the primary bus to a redundant bus. Unfortunately, a shortcoming of such an approach is that some types of faults in the bus enable signal may also cause complete system failure. For example, a bus enable signal might fail as an open circuit or become connected to some other logic signal in the system (i.e., a bridge fault). The signal might also fail in a way that results in increased susceptibility to electrical noise. These types of bus enable faults can cause complete system failure since these failure types can interfere with commanded switch-overs to a redundant bus.
Another approach to selecting between multiple buses, may be considered an autonomous approach. In accordance with this approach, the bus device monitors activity on the buses and uses a selection algorithm to decide which bus to use. Such an approach is further disclosed in U.S. Pat. No. 4,630,265 to Sexton, for example. This approach may also suffer from errors thereby causing failure of the entire system. Along these lines, U.S. Pat. No. 4,837,788 to Bird discloses a repeater for extending local area networks wherein the repeater also makes a bus selection determination based upon signals on the buses.
U.S. Pat. No. 5,555,372 to Tetreault et al. discloses a relatively complicated system including a device which monitors for errors on multiple buses and broadcasts an error signal if the currently selected bus experiences an error. To avoid inconsistent phasing operation when a number of such devices are in use, the device will retransmit a broadcast error signal regardless of the device's current bus selection state.
Unfortunately, the prior art approaches to providing switching of bus devices between multiple buses may suffer from other relatively likely errors, which result in system disruption or failure. For example, those approaches using a single bus enable signal from a bus controller may fail if there is a single error in the bus enable signal (as described above). An autonomous selection system may also suffer from single errors, if the bus selection is inconsistent for some devices using the bus.